<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Concurrency (computer science)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Concurrency_(computer_science)"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Concurrency_computer_science rootpage-Concurrency_computer_science skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Concurrency (computer science)</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">"Concurrent computer" redirects here. For the company, see <a href="Concurrent_Computer_Corporation" title="Concurrent Computer Corporation">Concurrent Computer Corporation</a>.</div>
<div role="note" class="hatnote navigation-not-searchable">For a more practical discussion, see <a href="Concurrent_computing" title="Concurrent computing">Concurrent computing</a>. For other uses, see <a href="Concurrency_(disambiguation)" class="mw-redirect mw-disambig" title="Concurrency (disambiguation)">Concurrency (disambiguation)</a>.</div>
<p>Concurrency refers to the ability of a system to execute multiple tasks through simultaneous execution or time-sharing (context switching), sharing resources and managing interactions. Concurrency improves responsiveness, throughput, and scalability in modern computing, including: <sup id="cite_ref-:0_1-0" class="reference"><a href="#cite_note-:0-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-:1_2-0" class="reference"><a href="#cite_note-:1-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-:2_3-0" class="reference"><a href="#cite_note-:2-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-:3_4-0" class="reference"><a href="#cite_note-:3-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-:4_5-0" class="reference"><a href="#cite_note-:4-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<ul><li><a href="Operating_system" title="Operating system">Operating systems</a> and <a href="Embedded_system" title="Embedded system">embedded systems</a></li>
<li><a href="Distributed_computing" title="Distributed computing">Distributed systems</a>, <a href="Parallel_computing" title="Parallel computing">parallel computing</a>, and <a href="High-performance_computing" title="High-performance computing">high-performance computing</a></li>
<li><a href="Database" title="Database">Database systems</a>, <a href="Web_application" title="Web application">web applications</a>, and <a href="Cloud_computing" title="Cloud computing">cloud computing</a></li></ul>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Related_concepts">Related concepts</h2></div>
<p>Concurrency is a broader concept that encompasses several related ideas, including: <sup id="cite_ref-:0_1-1" class="reference"><a href="#cite_note-:0-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-:1_2-1" class="reference"><a href="#cite_note-:1-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-:2_3-1" class="reference"><a href="#cite_note-:2-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-:3_4-1" class="reference"><a href="#cite_note-:3-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-:4_5-1" class="reference"><a href="#cite_note-:4-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<ul><li><a href="Parallel_computing" title="Parallel computing">Parallelism</a> (simultaneous execution on multiple processing units). Parallelism executes tasks independently on multiple CPU cores. Concurrency allows for multiple <i>threads of control</i> at the program level, which can use parallelism or time-slicing to perform these tasks. Programs may exhibit parallelism only, concurrency only, both parallelism and concurrency, neither. <sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Multithreading_(computer_architecture)" title="Multithreading (computer architecture)">Multi-threading</a> and <a href="Multiprocessing" title="Multiprocessing">multi-processing</a> (shared system resources)</li>
<li><a href="Synchronization" title="Synchronization">Synchronization</a> (coordinating access to shared resources)</li>
<li>Coordination (managing interactions between concurrent tasks)</li>
<li><a href="Concurrency_control" title="Concurrency control">Concurrency Control</a> (ensuring data consistency and integrity)</li>
<li><a href="Inter-process_communication" title="Inter-process communication">Inter-process Communication</a> (IPC, facilitating information exchange)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Issues">Issues</h2></div>
<p>Because computations in a concurrent system can interact with each other while being executed, the number of possible execution paths in the system can be extremely large, and the resulting outcome can be <a href="Indeterminacy_in_concurrent_computation" title="Indeterminacy in concurrent computation">indeterminate</a>. Concurrent use of shared <a href="Resource_(computer_science)" class="mw-redirect" title="Resource (computer science)">resources</a> can be a source of indeterminacy leading to issues such as <a href="Deadlock_(computer_science)" title="Deadlock (computer science)">deadlocks</a>, and <a href="Resource_starvation" class="mw-redirect" title="Resource starvation">resource starvation</a>.<sup id="cite_ref-cleaveland1996_7-0" class="reference"><a href="#cite_note-cleaveland1996-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p><p>Design of concurrent systems often entails finding reliable techniques for coordinating their execution, data exchange, <a href="Memory_allocation" class="mw-redirect" title="Memory allocation">memory allocation</a>, and execution scheduling to minimize <a href="Latency_(engineering)" title="Latency (engineering)">response time</a> and maximise <a href="Throughput" class="mw-redirect" title="Throughput">throughput</a>.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Theory">Theory</h2></div>
<p>Concurrency theory has been an active field of research in <a href="Theoretical_computer_science" title="Theoretical computer science">theoretical computer science</a>. One of the first proposals was <a href="Carl_Adam_Petri" title="Carl Adam Petri">Carl Adam Petri</a>'s seminal work on <a href="Petri_net" title="Petri net">Petri nets</a> in the early 1960s. In the years since, a wide variety of formalisms have been developed for modeling and reasoning about concurrency.
</p>
<div class="mw-heading mw-heading3"><h3 id="Models">Models</h3></div>
<p>A number of formalisms for modeling and understanding concurrent systems have been developed, including:<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>
</p>
<ul><li>The <a href="Parallel_random-access_machine" class="mw-redirect" title="Parallel random-access machine">parallel random-access machine</a><sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup></li>
<li>The <a href="Actor_model" title="Actor model">actor model</a></li>
<li>Computational bridging models such as the <a href="Bulk_synchronous_parallel" title="Bulk synchronous parallel">bulk synchronous parallel</a> (BSP) model</li>
<li><a href="Petri_net" title="Petri net">Petri nets</a></li>
<li><a href="Process_calculi" class="mw-redirect" title="Process calculi">Process calculi</a>
<ul><li><a href="Calculus_of_communicating_systems" title="Calculus of communicating systems">Calculus of communicating systems</a> (CCS)</li>
<li><a href="Communicating_sequential_processes" title="Communicating sequential processes">Communicating sequential processes</a> (CSP) model</li>
<li><a href="%CE%A0-calculus" title="Π-calculus">π-calculus</a></li></ul></li>
<li><a href="Tuple_space" title="Tuple space">Tuple spaces</a>, e.g., <a href="Linda_(coordination_language)" title="Linda (coordination language)">Linda</a></li>
<li><a href="SCOOP_(software)" title="SCOOP (software)">Simple Concurrent Object-Oriented Programming</a> (SCOOP)</li>
<li><a href="Reo_Coordination_Language" title="Reo Coordination Language">Reo Coordination Language</a></li>
<li><a href="Trace_monoid" title="Trace monoid">Trace monoids</a></li></ul>
<p>Some of these models of concurrency are primarily intended to support reasoning and specification, while others can be used through the entire development cycle, including design, implementation, proof, testing and simulation of concurrent systems. Some of these are based on <a href="Message_passing" title="Message passing">message passing</a>, while others have different mechanisms for concurrency.
</p><p>The proliferation of different models of concurrency has motivated some researchers to develop ways to unify these different theoretical models. For example, Lee and Sangiovanni-Vincentelli have demonstrated that a so-called "tagged-signal" model can be used to provide a common framework for defining the <a href="Denotational_semantics" title="Denotational semantics">denotational semantics</a> of a variety of different models of concurrency,<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> while Nielsen, Sassone, and Winskel have demonstrated that <a href="Category_theory" title="Category theory">category theory</a> can be used to provide a similar unified understanding of different models.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>
</p><p>The Concurrency Representation Theorem in the actor model provides a fairly general way to represent concurrent systems that are closed in the sense that they do not receive communications from outside. (Other concurrency systems, e.g., <a href="Process_calculi" class="mw-redirect" title="Process calculi">process calculi</a> can be modeled in the actor model using a <a href="Two-phase_commit_protocol" title="Two-phase commit protocol">two-phase commit protocol</a>.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>) The mathematical denotation denoted by a closed system <style data-mw-deduplicate="TemplateStyles:r886049734">
/* start https://en.wikipedia.org/ */
.mw-parser-output .monospaced{font-family:monospace,monospace}
/* end https://en.wikipedia.org/ */
</style><span class="monospaced">S</span> is constructed increasingly better approximations from an initial behavior called <span class="monospaced">⊥<sub>S</sub></span> using a behavior approximating function <span class="monospaced"><b>progression</b><sub>S</sub></span> to construct a denotation (meaning ) for <span class="monospaced">S</span> as follows:<sup id="cite_ref-clinger1981_14-0" class="reference"><a href="#cite_note-clinger1981-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>
</p>
<dl><dd><dl><dd><span class="monospaced"><b>Denote</b><sub>S</sub> ≡ ⊔<sub>i∈ω</sub> <b>progression</b><sub>S</sub><sup>i</sup>(⊥<sub>S</sub>)</span></dd></dl></dd></dl>
<p>In this way, <span class="monospaced">S</span> can be mathematically characterized in terms of all its possible behaviors.
</p>
<div class="mw-heading mw-heading3"><h3 id="Logics">Logics</h3></div>
<p>Various types of <a href="Temporal_logic" title="Temporal logic">temporal logic</a><sup id="cite_ref-stirling_15-0" class="reference"><a href="#cite_note-stirling-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> can be used to help reason about concurrent systems. Some of these logics, such as <a href="Linear_temporal_logic" title="Linear temporal logic">linear temporal logic</a> and <a href="Computation_tree_logic" title="Computation tree logic">computation tree logic</a>, allow assertions to be made about the sequences of states that a concurrent system can pass through. Others, such as action computational tree logic, <a href="Hennessy%E2%80%93Milner_logic" title="Hennessy–Milner logic">Hennessy–Milner logic</a>, and <a href="Leslie_Lamport" title="Leslie Lamport">Lamport's</a> <a href="Temporal_logic_of_actions" title="Temporal logic of actions">temporal logic of actions</a>, build their assertions from sequences of <i>actions</i> (changes in state). The principal application of these logics is in writing specifications for concurrent systems.<sup id="cite_ref-cleaveland1996_7-1" class="reference"><a href="#cite_note-cleaveland1996-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Practice">Practice</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1305433154">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<p><a href="Concurrent_programming" class="mw-redirect" title="Concurrent programming">Concurrent programming</a> encompasses programming languages and algorithms used to implement concurrent systems. Concurrent programming is usually considered to be more general than <a href="Parallel_programming" class="mw-redirect" title="Parallel programming">parallel programming</a> because it can involve arbitrary and dynamic patterns of communication and interaction, whereas parallel systems generally have a predefined and well-structured communications pattern. The base goals of concurrent programming include <i>correctness</i>, <i>performance</i> and <i>robustness</i>. Concurrent systems such as <a href="Operating_system" title="Operating system">Operating systems</a> and <a href="Database_management_system" class="mw-redirect" title="Database management system">Database management systems</a> are generally designed to operate indefinitely, including automatic recovery from failure, and not terminate unexpectedly (see <a href="Concurrency_control" title="Concurrency control">Concurrency control</a>). Some concurrent systems implement a form of transparent concurrency, in which concurrent computational entities may compete for and share a single resource, but the complexities of this competition and sharing are shielded from the programmer.
</p><p>Because they use shared resources, concurrent systems in general require the inclusion of some kind of <a href="Arbiter_(electronics)" title="Arbiter (electronics)">arbiter</a> somewhere in their implementation (often in the underlying hardware), to control access to those resources. The use of arbiters introduces the possibility of <a href="Indeterminacy_in_concurrent_computation" title="Indeterminacy in concurrent computation">indeterminacy in concurrent computation</a> which has major implications for practice including correctness and performance. For example, arbitration introduces <a href="Unbounded_nondeterminism" title="Unbounded nondeterminism">unbounded nondeterminism</a> which raises issues with <a href="Model_checking" title="Model checking">model checking</a> because it causes explosion in the state space and can even cause models to have an infinite number of states.
</p><p>Some concurrent programming models include <a href="Coprocess" title="Coprocess">coprocesses</a> and <a href="Deterministic_concurrency" class="mw-redirect" title="Deterministic concurrency">deterministic concurrency</a>. In these models, threads of control explicitly <a href="Yield_(multithreading)" title="Yield (multithreading)">yield</a> their timeslices, either to the system or to another process.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Dining_philosophers_problem" title="Dining philosophers problem">Dining philosophers problem</a></li>
<li><a href="Chu_space" title="Chu space">Chu space</a></li>
<li><a href="Client%E2%80%93server" class="mw-redirect" title="Client–server">Client–server</a> network nodes</li>
<li><a href="Clojure" title="Clojure">Clojure</a></li>
<li><a href="Cluster_computing" class="mw-redirect" title="Cluster computing">Cluster</a> nodes</li>
<li><a href="Concurrency_control" title="Concurrency control">Concurrency control</a></li>
<li><a href="Concurrent_computing" title="Concurrent computing">Concurrent computing</a></li>
<li><a href="Concurrent_object-oriented_programming" title="Concurrent object-oriented programming">Concurrent object-oriented programming</a></li>
<li><a href="Concurrency_pattern" title="Concurrency pattern">Concurrency pattern</a></li>
<li><a href="Construction_and_Analysis_of_Distributed_Processes" title="Construction and Analysis of Distributed Processes">Construction and Analysis of Distributed Processes</a> (CADP)</li>
<li><a href="D_(programming_language)" title="D (programming language)">D (programming language)</a></li>
<li><a href="Distributed_computing" title="Distributed computing">Distributed system</a></li>
<li><a href="Elixir_(programming_language)" title="Elixir (programming language)">Elixir (programming language)</a></li>
<li><a href="Erlang_(programming_language)" title="Erlang (programming language)">Erlang (programming language)</a></li>
<li><a href="Go_(programming_language)" title="Go (programming language)">Go (programming language)</a></li>
<li><a href="Gordon_Pask" title="Gordon Pask">Gordon Pask</a></li>
<li><a href="International_Conference_on_Concurrency_Theory" title="International Conference on Concurrency Theory">International Conference on Concurrency Theory</a> (CONCUR)</li>
<li><a href="OpenMP" title="OpenMP">OpenMP</a></li>
<li><a href="Parallel_computing" title="Parallel computing">Parallel computing</a></li>
<li><a href="Partitioned_global_address_space" title="Partitioned global address space">Partitioned global address space</a></li>
<li><a href="Pony_(programming_language)" title="Pony (programming language)">Pony (programming language)</a></li>
<li><a href="Process_(computing)" title="Process (computing)">Processes</a></li>
<li><a href="Ptolemy_Project" title="Ptolemy Project">Ptolemy Project</a></li>
<li><a href="Rust_(programming_language)" title="Rust (programming language)">Rust (programming language)</a></li>
<li><a href="Sheaf_(mathematics)" title="Sheaf (mathematics)">Sheaf (mathematics)</a></li>
<li><a href="Thread_(computing)" title="Thread (computing)">Threads</a></li>
<li><a href="X10_(programming_language)" title="X10 (programming language)">X10 (programming language)</a></li>
<li><a href="Structured_concurrency" title="Structured concurrency">Structured concurrency</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-:0-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-:0_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:0_1-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation book cs1"><i>Operating System Concepts</i>. Wiley. 29 July 2008. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0470128725</bdi>.</cite></span>
</li>
<li id="cite_note-:1-2"><span class="mw-cite-backlink">^ <a href="#cite_ref-:1_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:1_2-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite class="citation book cs1"><i>Computer Organization and Design: The Hardware/Software Interface</i>. The Morgan Kaufmann Series in Computer Architecture and Design. Morgan Kaufmann. 2012. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0123747501</bdi>.</cite></span>
</li>
<li id="cite_note-:2-3"><span class="mw-cite-backlink">^ <a href="#cite_ref-:2_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:2_3-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite class="citation book cs1"><i>Distributed Systems: Concepts and Design</i>. Pearson. 2012. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0132143011</bdi>.</cite></span>
</li>
<li id="cite_note-:3-4"><span class="mw-cite-backlink">^ <a href="#cite_ref-:3_4-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:3_4-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFQuinn1994" class="citation book cs1">Quinn, Michael Jay (1994). <i>Parallel Computing: Theory and Practice</i>. McGraw-Hill. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0070512948</bdi>.</cite></span>
</li>
<li id="cite_note-:4-5"><span class="mw-cite-backlink">^ <a href="#cite_ref-:4_5-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:4_5-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFZomaya1996" class="citation book cs1">Zomaya, Albert Y. (1996). <i>Parallel and Distributed Computing Handbook</i>. McGraw Hill Professional. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0070730205</bdi>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite class="citation book cs1"><i>Parallel and Concurrent Programming in Haskell</i>. O'Reilly Media. 2013. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781449335922</bdi>.</cite></span>
</li>
<li id="cite_note-cleaveland1996-7"><span class="mw-cite-backlink">^ <a href="#cite_ref-cleaveland1996_7-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-cleaveland1996_7-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFCleavelandScott_Smolka1996" class="citation journal cs1"><a href="Rance_Cleaveland" title="Rance Cleaveland">Cleaveland, Rance</a>; Scott Smolka (December 1996). <a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F242223.242252">"Strategic Directions in Concurrency Research"</a>. <i>ACM Computing Surveys</i>. <b>28</b> (4): 607. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F242223.242252">10.1145/242223.242252</a></span>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:13264261">13264261</a>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><cite id="CITEREFCampbellJohnsonMillerToub2010" class="citation book cs1">Campbell, Colin; Johnson, Ralph; Miller, Ade; Toub, Stephen (August 2010). <a rel="nofollow" class="external text" href="http://msdn.microsoft.com/en-us/library/ff963542.aspx"><i>Parallel Programming with Microsoft .NET</i></a>. Microsoft Press. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-7356-5159-3</bdi>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite id="CITEREFFilmanDaniel_Friedman1984" class="citation book cs1">Filman, Robert; Daniel Friedman (1984). <span class="id-lock-registration" title="Free registration required"><a rel="nofollow" class="external text" href="https://archive.org/details/coordinatedcompu0000film"><i>Coordinated Computing - Tools and Techniques for Distributed Software</i></a></span>. McGraw-Hill. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-07-022439-1</bdi>.</cite></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite id="CITEREFKellerChristoph_KeßlerJesper_Träff2001" class="citation book cs1">Keller, Jörg; Christoph Keßler; Jesper Träff (2001). <i>Practical PRAM Programming</i>. John Wiley and Sons.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite id="CITEREFLeeAlberto_Sangiovanni-Vincentelli1998" class="citation journal cs1">Lee, Edward; Alberto Sangiovanni-Vincentelli (December 1998). <a rel="nofollow" class="external text" href="http://ptolemy.eecs.berkeley.edu/publications/papers/98/framework/ieeeVersion.pdf">"A Framework for Comparing Models of Computation"</a> <span class="cs1-format">(PDF)</span>. <i>IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems</i>. <b>17</b> (12): <span class="nowrap">1217–</span>1229. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2F43.736561">10.1109/43.736561</a>.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite id="CITEREFMogens_NielsenVladimiro_SassoneGlynn_Winskel1993" class="citation conference cs1">Mogens Nielsen; Vladimiro Sassone; Glynn Winskel (1993). <a rel="nofollow" class="external text" href="http://citeseer.ist.psu.edu/article/nielsen94relationships.html">"Relationships Between Models of Concurrency"</a>. <i>REX School/Symposium</i>.</cite></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text">Frederick Knabe. A Distributed Protocol for Channel-Based Communication with Choice PARLE 1992.</span>
</li>
<li id="cite_note-clinger1981-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-clinger1981_14-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFWilliam_Clinger1981" class="citation journal cs1"><a href="William_Clinger_(computer_scientist)" title="William Clinger (computer scientist)">William Clinger</a> (June 1981). "Foundations of Actor Semantics". Mathematics Doctoral Dissertation. MIT. <a href="Hdl_(identifier)" class="mw-redirect" title="Hdl (identifier)">hdl</a>:<a rel="nofollow" class="external text" href="https://hdl.handle.net/1721.1%2F6935">1721.1/6935</a>.</cite> <span class="cs1-visible-error citation-comment"><code class="cs1-code">{{cite journal}}</code>: </span><span class="cs1-visible-error citation-comment">Cite journal requires <code class="cs1-code">|journal=</code> (help)</span></span>
</li>
<li id="cite_note-stirling-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-stirling_15-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFRoscoe2001" class="citation book cs1">Roscoe, Colin (2001). <i>Modal and Temporal Properties of Processes</i>. Springer. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-387-98717-0</bdi>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2></div>
<ul><li><cite id="CITEREFLynch1996" class="citation book cs1">Lynch, Nancy A. (1996). <span class="id-lock-registration" title="Free registration required"><a rel="nofollow" class="external text" href="https://archive.org/details/distributedalgor0000lync"><i>Distributed Algorithms</i></a></span>. Morgan Kaufmann. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-55860-348-6</bdi>.</cite></li>
<li><cite id="CITEREFTanenbaumVan_Steen2002" class="citation book cs1">Tanenbaum, Andrew S.; Van Steen, Maarten (2002). <i>Distributed Systems: Principles and Paradigms</i>. Prentice Hall. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-13-088893-8</bdi>.</cite></li>
<li><cite id="CITEREFKurki-Suonio2005" class="citation book cs1">Kurki-Suonio, Reino (2005). <i>A Practical Theory of Reactive Systems</i>. Springer. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-3-540-23342-8</bdi>.</cite></li>
<li><cite id="CITEREFGarg2002" class="citation book cs1">Garg, Vijay K. (2002). <i>Elements of Distributed Computing</i>. Wiley-IEEE Press. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-471-03600-5</bdi>.</cite></li>
<li><cite id="CITEREFMageeKramer,_Jeff2006" class="citation book cs1">Magee, Jeff; Kramer, Jeff (2006). <i>Concurrency: State Models and Java Programming</i>. Wiley. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-470-09355-9</bdi>.</cite></li>
<li>Distefano, S., & Bruneo, D. (2015). <i>Quantitative assessments of distributed systems: Methodologies and techniques</i> (1st ed.). Somerset: John Wiley & Sons Inc.<a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781119131144</bdi></li>
<li>Bhattacharyya, S. S. (2013;2014;). <i>Handbook of signal processing systems</i> (Second;2;2nd 2013; ed.). New York, NY: Springer.10.1007/978-1-4614-6859-2 <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781461468592</bdi></li>
<li>Wolter, K. (2012;2014;). <i>Resilience assessment and evaluation of computing systems</i> (1. Aufl.;1; ed.). London;Berlin;: Springer. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9783642290329</bdi></li></ul>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://processalgebra.blogspot.com/">Process Algebra Diary - Prof. Luca Aceto's blog on Concurrency Theory</a></li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20060128114620/http://vl.fmnet.info/concurrent/">Concurrent Systems</a> at <a rel="nofollow" class="external text" href="http://vlib.org/">The WWW Virtual Library</a></li>
<li><a rel="nofollow" class="external text" href="http://shairosenfeld.com/concurrency.html">Concurrency patterns presentation</a> given at <a rel="nofollow" class="external text" href="http://scaleconf.org">scaleconf</a></li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Concurrent_computing233" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id="Concurrent_computing233" style="font-size:114%;margin:0 4em"><a href="Concurrent_computing" title="Concurrent computing">Concurrent computing</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">General</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul>
<li><a href="Concurrency_control" title="Concurrency control">Concurrency control</a></li>
<li><a href="Concurrent_data_structure" title="Concurrent data structure">Concurrent data structures</a>
<ul><li><a href="Concurrent_hash_table" title="Concurrent hash table">Concurrent hash tables</a></li></ul></li>
<li><a href="Concurrent_user" title="Concurrent user">Concurrent users</a></li>
<li><a href="Indeterminacy_in_concurrent_computation" title="Indeterminacy in concurrent computation">Indeterminacy</a></li>
<li><a href="Linearizability" title="Linearizability">Linearizability</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Process_calculus" title="Process calculus">Process calculi</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Communicating_sequential_processes" title="Communicating sequential processes">CSP</a></li>
<li><a href="Calculus_of_communicating_systems" title="Calculus of communicating systems">CCS</a></li>
<li><a href="Algebra_of_Communicating_Processes" class="mw-redirect" title="Algebra of Communicating Processes">ACP</a></li>
<li><a href="Language_Of_Temporal_Ordering_Specification" class="mw-redirect" title="Language Of Temporal Ordering Specification">LOTOS</a></li>
<li><a href="%CE%A0-calculus" title="Π-calculus">π-calculus</a></li>
<li><a href="Ambient_calculus" title="Ambient calculus">Ambient calculus</a></li>
<li><a href="API-Calculus" title="API-Calculus">API-Calculus</a></li>
<li><a href="PEPA" title="PEPA">PEPA</a></li>
<li><a href="Join-calculus" title="Join-calculus">Join-calculus</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Classic problems</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="ABA_problem" title="ABA problem">ABA problem</a></li>
<li><a href="Cigarette_smokers_problem" title="Cigarette smokers problem">Cigarette smokers problem</a></li>
<li><a href="Deadlock_(computer_science)" title="Deadlock (computer science)">Deadlock</a></li>
<li><a href="Dining_philosophers_problem" title="Dining philosophers problem">Dining philosophers problem</a></li>
<li><a href="Producer%E2%80%93consumer_problem" title="Producer–consumer problem">Producer–consumer problem</a></li>
<li><a href="Race_condition" title="Race condition">Race condition</a></li>
<li><a href="Readers%E2%80%93writers_problem" title="Readers–writers problem">Readers–writers problem</a></li>
<li><a href="Sleeping_barber_problem" title="Sleeping barber problem">Sleeping barber problem</a></li></ul>
</div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div>
<ul><li><span class="noviewer" typeof="mw:File"><span title="Category"></span></span> Category: Concurrent computing</li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-04-10" href="https://en.wikipedia.org/wiki/?title=Concurrency_(computer_science)&oldid=1284856907">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>